/*
 * Copyright (c) 2025 Industrial Software Feature Database
 */
package com.comac.ins.isfd.domain.bo;

import com.comac.ins.common.core.validate.AddGroup;
import com.comac.ins.common.core.validate.EditGroup;
import com.comac.ins.common.mybatis.core.domain.BaseEntity;
import com.comac.ins.isfd.domain.IsfdDatabaseDataImportRecord;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;

/**
 * 数据导入记录业务对象 isfd_database_data_import_record
 *
 * @author Lion Li
 * @date 2025-03-20
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = IsfdDatabaseDataImportRecord.class, reverseConvertGenerate = false)
public class IsfdDatabaseDataImportRecordBo extends BaseEntity {

    /**
     * ID
     */
    @NotNull(message = "ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 模型id
     */
    private Long modelId;

    /**
     * 模型名称
     */
    private String modelName;

    /**
     * 表名
     */
    private String tableName;

    /**
     * 数据质量ID
     */
    private Long dataQualityId;

    /**
     * 数据转换ID
     */
    private Long dataConversionId;

    /**
     * 模板ID
     */
    private Long dataTemplateId;

    /**
     * 模板名称
     */
    private String dataTemplateName;

    /**
     * 数据量
     */
    private Integer dataQuantity;

    /**
     * 导入方式
     * @see com.comac.ins.isfd.constant.enums.IsfdImportMethodEnum
     */
    private String importMethod;

    /**
     * 数据形式
     */
    private String dataForm;

    /**
     * 原始文件URL
     */
    private String dataFileUrl;

    /**
     * 数据导入时间
     */
    private Date dataImportTime;

    /**
     * 数据导入者
     */
    private String dataImportBy;

    /**
     * 数据来源
     */
    private String dataSource;

    /**
     * 备注
     */
    private String comment;

    /**
     * 删除标志；0：存在，1：已删除
     */
    private Long isDelete;

    /**
     * 导入数据主表id
     */
    private Long importId;

    /**
     * 文件名称
     */
    private String fileName;

    /**
     * 业务场景id
     */
    @NotNull(message = "业务场景id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long sceneId;

    /**
     * 业务系统id
     */
    private Long systemId;

    /**
     * 要素库类型id
     */
    @NotNull(message = "要素库类型id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long databaseTypeId;

    /**
     * 是否是删除操作
     */
    private Long isDeleteOperation;

    /**
     * 场景名称
     */
    private String sceneName;

    /**
     * 系统名称
     */
    private String systemName;

    /**
     * 要素库类型名称
     */
    private String databaseTypeName;

    /**
     * api信息
     */
    private String apiMethod;

    /**
     * 场景-数据库-模型关系id
     */
    private Long businessDatabaseRefId;

    /**
     * 数据所属者id
     */
    @NotBlank(message = "数据所属者id不能为空", groups = { AddGroup.class, EditGroup.class })
    private String dataOwnerId;

    /**
     * 数据所属者名称
     */
    private String dataOwnerName;

    /**
     * 数据安全级别，高、中、低
     */
    @NotBlank(message = "数据安全级别，高、中、低不能为空", groups = { AddGroup.class, EditGroup.class })
    private String dataSafeLevel;

    /**
     * 数据保留政策，永久、十年、一年
     */
    @NotBlank(message = "数据保留政策，永久、十年、一年不能为空", groups = { AddGroup.class, EditGroup.class })
    private String dataRetentionPolicy;

    @NotBlank(message = "数据路径不能为空！",  groups = { AddGroup.class, EditGroup.class })
    private String directoryPath;

    /**
     * 文件大小
     */
    @NotNull(message = "文件大小不能为空！",  groups = { AddGroup.class, EditGroup.class })
    private Long fileSize;

    /**
     * 算法配置id
     */
    private Long algorithmConfigId;
}
